Package de.yaams.extensions.rgssproject.map.nevent.core

Source Code of de.yaams.extensions.rgssproject.map.nevent.core.YEventCodeList

/**
*
*/
package de.yaams.extensions.rgssproject.map.nevent.core;

import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JList;

import de.yaams.extensions.rgssproject.database.form.RubyForm;
import de.yaams.extensions.rgssproject.map.nevent.YEventCommandList;
import de.yaams.maker.helper.gui.YEx;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.FormInfo;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.gui.list.YArrayList;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.environment.YLevel;

/**
* @author abt
*
*/
public class YEventCodeList extends YArrayList<EventCode> {

  private static final long serialVersionUID = 5395161197125590084L;
  protected YEventCommandList gui;
  protected EventCode oldCode;

  /**
   * Create a new YEventCodeList
   *
   * @param ary
   */
  public YEventCodeList(ArrayList<EventCode> ary, YEventCommandList gui) {
    super(ary);

    this.gui = gui;

    // build toolbar
    delete = true;
    swap = true;
    buildToolbar(I18N.t("Event Command"), "event");
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.maker.helper.gui.list.YSimpleList#add()
   */
  @Override
  public void add() {
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.maker.helper.gui.list.YSimpleList#getIcon(java.lang.Object)
   */
  @Override
  public Object getIcon(EventCode o) {
    return o.getCommand().getIcon(o);
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.maker.helper.gui.list.YSimpleList#isModified(java.lang.Object)
   */
  @Override
  public boolean isModified(EventCode o) {
    return o.isModified();
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.maker.helper.gui.list.YSimpleList#info()
   */
  @Override
  protected void info() {
    // TODO Auto-generated method stub
    throw new UnsupportedOperationException("TODO - ");

  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.maker.helper.gui.list.YSimpleList#getDesc(java.lang.Object)
   */
  @Override
  public String getDesc(EventCode o) {
    return null;
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.maker.helper.gui.list.YSimpleList#configIntern()
   */
  @Override
  protected void configIntern() {
    final EventCode e = getSelectedObject();

    // found code?
    if (e == null) {
      return;
    }

    // save it?
    if (oldCode != null) {
      oldCode.saveBack();
    }
    oldCode = e;

    try {
      // build panel
      FormBuilder f = new FormBuilder("event.code.list." + e.getCommand().getIcon());
      f.addHeader("basic", new FormHeader(I18N.t("Basic"), e.getCommand().getIcon()));

      // build it
      getSelectedObject().buildPanel(f);
      // add modifikation
      f.addChangeListener(new FormElementChangeListener() {

        @Override
        public void stateChanged(FormElement form) {
          e.setModified(true);
          e.setTitleCache(null);

        }
      });

      if (getSelectedObject().getCommand().isBeta() || YLevel.IS_DEVELOPER) {
        f.addHeader("warn", new FormHeader(I18N.t("Hinweis für die Benutzung"), "info").setSorting(8));
        if (getSelectedObject().getCommand().isBeta()) {
          f.addElement(
              "warn.info",
              new FormInfo("", I18N.t("Die Unterstützung von {0} ist noch experimentell. Es kann zu Problemen kommen.", e.getCommand().getName())));
        }
        if (YLevel.IS_DEVELOPER) {
          f.addElement("warn.code", RubyForm.getError(I18N.t("Code"), "@code", e.getObject()));
          f.addElement("warn.id", new FormInfo(I18N.t("ID"), e.getId()));
          f.addElement("warn.para", RubyForm.getError(I18N.t("Parameter"), "@parameters", e.getObject()));
          f.addElement("warn.indent", RubyForm.getError(I18N.t("Indent"), "@indent", e.getObject()));
        }
      }

      // display right the infos
      gui.setRight(f.getPanel(true));
    } catch (Throwable t) {
      YEx.info("Can not create Panel", t);
    }

  }

  /**
   * If the user select one element
   */
  @Override
  protected void selected() {
    configIntern();
  }

  /**
   * Format the output fpr the list renderer
   *
   * @param label
   * @param list
   * @param value
   * @param index
   * @param isSelected
   * @param cellHasFocus
   * @return
   */
  @Override
  public JLabel getListCellRendererComponent(JLabel label, final JList list, final Object value, final int index, final boolean isSelected,
      final boolean cellHasFocus) {
    JLabel l = super.getListCellRendererComponent(label, list, value, index, isSelected, cellHasFocus);
    // add border
    l.setBorder(BorderFactory.createEmptyBorder(0, ((EventCode) value).getIndent() * 8, 0, 0));

    return l;
  }

  /**
   * Can delete the act code?
   */
  @Override
  public boolean canDelete() {
    // can delete it?
    return EventCommandManagement.get(getSelectedObject().getId()).canDelete(super.canDelete());
  }
}
TOP

Related Classes of de.yaams.extensions.rgssproject.map.nevent.core.YEventCodeList

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.